#ifndef REGEXPTONONFINAUT_H_
#define REGEXPTONONFINAUT_H_

#include "NonFinAut.h"

using namespace std;

template<class Type>
class RegexpToNonFinAut
{
public:
	RegexpToNonFinAut();
	virtual ~RegexpToNonFinAut();
	
	NonFinAut<Type> build_nfa_basic(input in);

	//maakt een or van nfa1 en nfa2 (nfa1|nfa2)
	NonFinAut<Type> build_nfa_alter(NonFinAut<Type> nfa1, NonFinAut<Type> nfa2);

	// Maakt een concatenation van nfa1 en nfa2 (nfa1nfa2)
	NonFinAut<Type> build_nfa_concat(NonFinAut<Type> nfa1, NonFinAut<Type> nfa2);

	//Maakt een star (kleene closure) van nfa (nfa*)
	NonFinAut<Type> build_nfa_star(NonFinAut<Type> nfa);

	NonFinAut<Type> build_nfa_plus(NonFinAut<Type> nfa);
private:
	NonFinAut<Type> basic;
};
#include "RegexpToNonFinAut.cpp"
#endif